iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0

參考類型

  • 陣列是使用「參考資料類型」的物件,當宣告一個陣列時,該名稱紀錄的是記憶體的位址,實際陣列的內容值則是存放在記憶體中。

  • 當我們將陣列A指定給陣列B之後,修改陣列A內容,實際B的內容也會隨之改變。
    程式範例試做:

public class Alex0926_1{
    public static void main (String[] args){
        int[] A= {11,22,33};
        int[] B= new int[3];
        for( int i=0 ; i < A.length ; i++ );
            System.out.printf("A[%d]= %d \t", i, A[i]);
        System.out.println();
        B=A;
        for( int i=0 ; i < B.length ; i++ );
            System.out.printf("B[%d]= %d \t", i, B[i]);
        System.out.println();
        
        A[2]=100;
        System.out.println("B[2]=" + B[2] );
    }
}

執行結果:

A[0]= 11    A[1]= 22    A[2]= 33
B[0]= 11    B[1]= 22    B[2]= 33
B[2]=100

以下有三種常見方式可以將陣列A個元素的內容指定給陣列B,也就是使陣列B有獨立的記憶體位址紀錄內容值。
(1)利用迴圈逐一指定元素內容

    for(int i=0; i<A.length;i++ )
    B[i]=A[i];

(2)使用系統物件裡的arrarcopy()方法,達到達到複製陣列內各元素的內容值的目的。

    System.arraycopy(A, 0, B, 0, 3);

(3)使用陣列既有的clone()方法。比如要將陣列A元素複製到B陣列,程式可寫為:

    B=A.clone();

程式範例試做:

public class Alex0926_2
    public static void main(String[] args){
        int[] A ={11,22,33,44,55};
        int[] B = new int [A.length];
        for( int i = 0 ; i < A.length; i++ )
            B[i] = A[i];
        int[] C = new int[A.length];
        System.arraycopy(A, 0, C, 0, A.length);
        int[] D;
        D = A.clone();
    }
}

不管事迴圈還是System類別的arraycopy()方法複製元素的內容,複製目的的陣列都必須先宣告且要大於來源陣列的元素數量,而使用clone()方法,則不需事先宣告元素數量。


上一篇
Java程式陣列-2
下一篇
Java程式陣列-進階2
系列文
自學Java物件導向程式語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言